package com.ruiysoft.controller.mdse.util;

import com.ruiysoft.controller.integralmdse.vo.InnrIntegralMdseVo;
import com.ruiysoft.controller.integralmdse.vo.IntegralMdseVo;
import com.ruiysoft.controller.mdse.vo.OrderSkuListVo;
import com.ruiysoft.controller.mdse.vo.RuleValueVo;
import com.ruiysoft.controller.mdse.vo.SkuListVo;
import com.ruiysoft.controller.mdse.vo.SkuPhoto;
import com.ruiysoft.controller.mdse.vo.SkuVo;
import com.ruiysoft.controller.mdse.vo.SpuDtoVo;
import com.ruiysoft.controller.mdse.vo.SpuListVo;
import com.ruiysoft.controller.mdse.vo.SpuPhoto;
import com.ruiysoft.controller.mdse.vo.WxRuleValueVo;
import com.ruiysoft.controller.mdse.vo.WxSkuDtoVo;
import com.ruiysoft.entity.mdse.*;
import com.ruiysoft.pub.consts.EnumUtil;
import com.ruiysoft.service.mdse.bean.MerchandiseSkuDto;
import com.ruiysoft.service.mdse.bean.MerchandiseSpuDto;
import com.ruiysoft.service.mdse.consts.MdseEnum;
import com.ruiysoft.util.NumberUtils;
import com.ruiysoft.util.RegularUtil;
import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;

public class MdseVoUtil {
    public static SpuListVo spuDtoToSpuListVo(MerchandiseSpuDto spuDto) throws Exception {
        MerchandiseCategory merchandiseCategory = spuDto.getCategory();

        SpuListVo spuListVo = new SpuListVo().category(merchandiseCategory == null ? "" : merchandiseCategory.getCategoryName())
                .setCategoryId(merchandiseCategory == null ? null : merchandiseCategory.getCategoryId() + "")
                .costPrice(spuDtoToCostPrice(spuDto))
                .unitPrice(spuDtoToUnitPrice(spuDto))
                .listPrice(spuDtoToListPrice(spuDto))
                .photo(spuDto.getSpu().getSpuPicture())
                .quantity(spuDtoToQuantity(spuDto))
                .spuId(spuDto.getSpu().getSpuId())
                .status(spuDto.getSpu().getStatus())
                .spuName(spuDto.getSpu().getMerchandiseName());

        if(spuDto.getSkuDtoList() != null && spuDto.getSkuDtoList().size() > 0)
            spuListVo.setSequence(spuDto.getSkuDtoList().get(0).getSku().getSequence());
//
//        if(spuDto.getSupplier() != null)
//            spuListVo.setSupplierName(spuDto.getSupplier().getSupplierName());
//
//        if(spuDto.getFreight() != null)
//            spuListVo.setFreightName(spuDto.getFreight().getName());

        spuListVo.setSupplierName(spuDto.getSpu().getSupplierName());
        spuListVo.setFreightName(spuDto.getSpu().getFreightName());
        spuListVo.setCategory(spuDto.getSpu().getCategoryName());

        return spuListVo;
    }

    private static String spuDtoToQuantity(MerchandiseSpuDto spuDto) throws Exception {
        String quantity = "";
        if(spuDto!=null&&spuDto.getSkuDtoList()!=null&&!spuDto.getSkuDtoList().isEmpty()){
            Integer minQuantity = null;
            Integer maxQuantity = null;
            for (MerchandiseSkuDto skuDto : spuDto.getSkuDtoList()) {
                if(skuDto.getSku()!=null){
                    if(minQuantity==null&&maxQuantity==null){
                        maxQuantity=skuDto.getSku().getQuantity();
                        minQuantity=skuDto.getSku().getQuantity();
                    }else if(skuDto.getSku().getQuantity()>maxQuantity){
                        maxQuantity=skuDto.getSku().getQuantity();
                    }else if(skuDto.getSku().getQuantity()<minQuantity){
                        minQuantity=skuDto.getSku().getQuantity();
                    }
                }
            }
            if(minQuantity!=null&&maxQuantity!=null&&minQuantity.equals(maxQuantity)){
                quantity= minQuantity.toString();
            }else if(minQuantity!=null&&maxQuantity!=null){
                quantity= minQuantity.toString()+" ~ "+ maxQuantity.toString();
            }else{
                quantity = "-";
            }
        }
        return quantity;
    }


    private static String spuDtoToListPrice(MerchandiseSpuDto spuDto) throws Exception {
        String lPrice = "";
        if(spuDto!=null&&spuDto.getSkuDtoList()!=null&&!spuDto.getSkuDtoList().isEmpty()){
            Long minlPrice = null;
            Long maxlPrice = null;
            for (MerchandiseSkuDto skuDto : spuDto.getSkuDtoList()) {
                if(skuDto.getSku()!=null){
                    if(minlPrice==null&&maxlPrice==null){
                        maxlPrice=skuDto.getSku().getListPrice();
                        minlPrice=skuDto.getSku().getListPrice();
                    }else if(skuDto.getSku().getListPrice()!=null&&skuDto.getSku().getListPrice()>maxlPrice){
                        maxlPrice=skuDto.getSku().getListPrice();
                    }else if(skuDto.getSku().getListPrice()!=null&&skuDto.getSku().getListPrice()<minlPrice){
                        minlPrice=skuDto.getSku().getListPrice();
                    }
                }
            }
            lPrice = getString(minlPrice, maxlPrice);
        }
        return lPrice;
    }

    private static String spuDtoToUnitPrice(MerchandiseSpuDto spuDto) throws Exception {
        String uPrice = "";
        if(spuDto!=null&&spuDto.getSkuDtoList()!=null&&!spuDto.getSkuDtoList().isEmpty()){
            Long minuPrice = null;
            Long maxuPrice = null;
            for (MerchandiseSkuDto skuDto : spuDto.getSkuDtoList()) {
                if(skuDto.getSku()!=null){
                    if(minuPrice==null&&maxuPrice==null){
                        maxuPrice=skuDto.getSku().getUnitPrice();
                        minuPrice=skuDto.getSku().getUnitPrice();
                    }else if(skuDto.getSku().getUnitPrice()>maxuPrice){
                        maxuPrice=skuDto.getSku().getUnitPrice();
                    }else if(skuDto.getSku().getUnitPrice()<minuPrice){
                        minuPrice=skuDto.getSku().getUnitPrice();
                    }
                }
            }
            uPrice = getString(minuPrice, maxuPrice);
        }
        return uPrice;
    }

    private static String getString(Long minPrice, Long maxPrice) throws Exception {
        String price;
        if(minPrice!=null&&maxPrice!=null&&minPrice.equals(maxPrice)){
            price= NumberUtils.changeF2Y2(minPrice.toString());
        }else if(minPrice!=null&&maxPrice!=null){
            price= NumberUtils.changeF2Y2(minPrice.toString())+" ~ "+ NumberUtils.changeF2Y2(maxPrice.toString());
        }else{
            price = "-";
        }
        return price;
    }

    private static String spuDtoToCostPrice(MerchandiseSpuDto spuDto) throws Exception {
        String cPrice = "";
        if(spuDto!=null&&spuDto.getSkuDtoList()!=null&&!spuDto.getSkuDtoList().isEmpty()){
            Long mincPrice = null;
            Long maxcPrice = null;
            for (MerchandiseSkuDto skuDto : spuDto.getSkuDtoList()) {
                if(skuDto.getSku()!=null){
                    if(mincPrice==null&&maxcPrice==null){
                        maxcPrice=skuDto.getSku().getCostPrice();
                        mincPrice=skuDto.getSku().getCostPrice();
                    }else if(skuDto.getSku().getCostPrice()!=null&&skuDto.getSku().getCostPrice()>maxcPrice){
                        maxcPrice=skuDto.getSku().getCostPrice();
                    }else if(skuDto.getSku().getCostPrice()!=null&&skuDto.getSku().getCostPrice()<mincPrice){
                        mincPrice=skuDto.getSku().getCostPrice();
                    }
                }
            }
            cPrice = getString(mincPrice, maxcPrice);
        }
        return cPrice;
    }

    public static SpuDtoVo spuDtoToSpuDtoVo(MerchandiseSpuDto spuDto) throws Exception {
        if(spuDto==null||spuDto.getSpu()==null){
            return null;
        }
        return new SpuDtoVo().categoryId(spuDto.getSpu().getMainCategory())
                .spuId(spuDto.getSpu().getSpuId())
                .spuName(spuDto.getSpu().getMerchandiseName())
                .info(spuDto.getSpu().getInfo())
                .type(spuDto.getSpu().getType())
                .status(spuDto.getSpu().getStatus())
                .photos(spuPicsToSpuPhoto(spuDto.getSpuPicList()))
                .ruleValues(mdseRuleValuesToRuleValueVos(spuDto.getRuleValues()))
                .skus(skuDtosToSkuVos(spuDto.getSkuDtoList()));
    }

    private static List<SpuPhoto> spuPicsToSpuPhoto(List<MerchandisePictureSpu> spuPicList) {
        List<SpuPhoto> voList = new ArrayList<>();
        if(spuPicList!=null&&!spuPicList.isEmpty()){
            spuPicList.forEach(spuPic->{
                voList.add(new SpuPhoto().id(spuPic.getId())
                .sort(spuPic.getSort())
                .type(spuPic.getType()).delFlag(spuPic.getDelFlag())
                .photoUrl(spuPic.getPath()));
            });
        }
        return voList;
    }

    private static List<SkuVo> skuDtosToSkuVos(List<MerchandiseSkuDto> skuDtoList) throws Exception {
        List<SkuVo> voList = new ArrayList<>();
        if(skuDtoList!=null&&!skuDtoList.isEmpty()){
            skuDtoList.forEach(sku->{voList.add(skuToSkuVo(sku));});
        }
        return  voList;
    }

    private static SkuVo skuToSkuVo(MerchandiseSkuDto sku){
        if(sku==null||sku.getSku()==null){
            return null;
        }
        return new SkuVo().costPrice(sku.getSku().getCostPrice()!=null?NumberUtils.changeF2Y2(sku.getSku().getCostPrice().toString()):"")
                .listPrice(sku.getSku().getListPrice()!=null?NumberUtils.changeF2Y2(sku.getSku().getListPrice().toString()):"")
                .unitPrice(sku.getSku().getUnitPrice()!=null?NumberUtils.changeF2Y2(sku.getSku().getUnitPrice().toString()):"")
                .delFlag(sku.getSku().getDelFlag())
                .quantity(sku.getSku().getQuantity())
                .skuId(sku.getSku().getSkuId())
                .photos(skuPicsToSkuPhotos(sku.getSkuPics()))
                .ruleValues(mdseRuleValuesToRuleValueVos(sku.getRuleValues()));
    }

    private static List<SkuPhoto> skuPicsToSkuPhotos(List<MerchandisePictureSku> skuPics) {
        List<SkuPhoto> voList = new ArrayList<>();
        if(skuPics!=null&&!skuPics.isEmpty()){
            skuPics.forEach(skuPic->{
                voList.add(new SkuPhoto().id(skuPic.getId())
                        .sort(skuPic.getSort()).delFlag(skuPic.getDelFlag())
                        .photoUrl(skuPic.getPath()));
            });
        }
        return voList;
    }


    private static List<RuleValueVo> mdseRuleValuesToRuleValueVos(List<MerchandiseRuleValue> ruleValues) {
        List<RuleValueVo> voList = new ArrayList<>();
        if(ruleValues!=null&&!ruleValues.isEmpty()){
            ruleValues.forEach(ruleValue->{
                voList.add(new RuleValueVo().delFlag(ruleValue.getIsUse())
                .id(ruleValue.getId())
                .ruleName(ruleValue.getRuleName())
                .value(ruleValue.getRuleValue()));
            });
        }
        return voList;
    }

    public static MerchandiseSpuDto spuDtoVoToSpuDto(SpuDtoVo spuDtoVo) {
        if(spuDtoVo==null){
            throw new IllegalArgumentException("没有要保存的数据！");
        }

        return new MerchandiseSpuDto()
            .setSpu(new MerchandiseSpu()
                    .setSpuId(spuDtoVo.getSpuId())
                    .setStatus(spuDtoVo.getStatus())
                    .setInfo(spuDtoVo.getInfo())
                    .setType(spuDtoVo.getType())
                    .setMainCategory(spuDtoVo.getCategoryId())
                    .setMerchandiseName(spuDtoVo.getSpuName()))
            .setRuleValues(ruleValueVoToRuleValueList(spuDtoVo.getRuleValues()))
            .setSkuDtoList(skuVoToSkuDtoList(spuDtoVo.getSkus()))
            .setSpuPicList(spuPhotoTpSpuPicList(spuDtoVo.getPhotos()));
    }

    private static List<MerchandisePictureSpu> spuPhotoTpSpuPicList(List<SpuPhoto> photos) {
        if(photos==null||photos.isEmpty()){
            throw new IllegalArgumentException("必须上传一张图片");
        }
        return photos.stream().filter(Objects::nonNull).map(MdseVoUtil::spuPhotoTpSpuPic).collect(Collectors.toList());
    }

    private static MerchandisePictureSpu spuPhotoTpSpuPic(SpuPhoto vo) {
        return new MerchandisePictureSpu()
                .setId(vo.getId())
                .setPath(vo.getPhotoUrl())
                .setDelFlag(vo.getDelFlag()==null?EnumUtil.DelFlag.NO.getIndex():vo.getDelFlag())
                .setType(vo.getType())
                .setSort(vo.getSort());
    }

    private static List<MerchandiseRuleValue> ruleValueVoToRuleValueList(List<RuleValueVo> ruleValues) {
        if(ruleValues==null||ruleValues.isEmpty()){
            return null;
        }
        return ruleValues.stream().filter(Objects::nonNull).map(MdseVoUtil::ruleValueVoToRuleValue).collect(Collectors.toList());
    }

    private static MerchandiseRuleValue ruleValueVoToRuleValue(RuleValueVo vo) {
        return new MerchandiseRuleValue().setId(vo.getId())
                .setIsUse(vo.getDelFlag()).setRuleName(vo.getRuleName())
                .setRuleValue(vo.getValue());
    }

    private static List<MerchandiseSkuDto> skuVoToSkuDtoList(List<SkuVo> skus) {
        if(skus==null||skus.isEmpty()){
            throw new IllegalArgumentException("至少包含一个sku");
        }
        return skus.stream().filter(Objects::nonNull).map(MdseVoUtil::skuVoToSkuDto).collect(Collectors.toList());
    }

    private static MerchandiseSkuDto skuVoToSkuDto(SkuVo vo) throws RuntimeException {
        return new MerchandiseSkuDto().setSku(new MerchandiseSku().setSkuId(vo.getSkuId())
                                                            .setCostPrice(valiSkuPrice(vo.getCostPrice(), EnumUtil.Required.NO)).setListPrice(valiSkuPrice(vo.getListPrice(), EnumUtil.Required.NO))
                                                            .setUnitPrice(valiSkuPrice(vo.getUnitPrice(), EnumUtil.Required.YES)).setDelFlag(vo.getDelFlag()).setQuantity(vo.getQuantity())                )
                .setSkuPics(skuPhotoTpSkuPicList(vo.getPhotos()))
                .setRuleValues(ruleValueVoToRuleValueList(vo.getRuleValues()));
    }

    private static List<MerchandisePictureSku> skuPhotoTpSkuPicList(List<SkuPhoto> photos) {
        if(photos==null||photos.isEmpty()){
//            throw new IllegalArgumentException("必须上传一张图片");
            return new ArrayList<>();
        }else{
            return photos.stream().filter(Objects::nonNull).map(MdseVoUtil::skuPhotoTpSkuPic).collect(Collectors.toList());
        }
    }

    private static MerchandisePictureSku skuPhotoTpSkuPic(SkuPhoto vo) {
        return new MerchandisePictureSku()
                .setId(vo.getId())
                .setPath(vo.getPhotoUrl())
                .setDelFlag(vo.getDelFlag()==null?EnumUtil.DelFlag.NO.getIndex():vo.getDelFlag())
                .setSort(vo.getSort());
    }

    public static WxSkuDtoVo skuDtoToWxSkuVo(MerchandiseSkuDto skuDto, InnrIntegralMdseVo innrIntegralMdseVo) throws Exception {
        WxSkuDtoVo wxSkuDtoVo = new WxSkuDtoVo().skuId(skuDto.getSku().getSkuId())
                .listPrice(skuDto.getSku().getListPrice()!=null?NumberUtils.changeF2Y2(skuDto.getSku().getListPrice().toString()):"")
                .unitPrice(skuDto.getSku().getUnitPrice()!=null?NumberUtils.changeF2Y2(skuDto.getSku().getUnitPrice().toString()):"")
                .photos(skuAndSpuPicToSkuPhoto(skuDto.getSkuPics(),skuDto.getSpuPics()))
                .detailPhotos(spuPicsToDetailPhotos(skuDto.getSpuPics()))
                .integralMdse(getIntegralMdse(innrIntegralMdseVo))
                .info(skuDto.getSpu().getInfo())
                //商品名也在里边处理
                .ruleValues(ruleValueVoToRuleValueListWx(skuDto.getRuleValues(),skuDto.getRuleValueRelas(),skuDto))
                .quantity(skuDto.getSku().getQuantity())
                .status(Objects.equals(skuDto.getSku().getDelFlag(),EnumUtil.DelFlag.NO.getIndex())?skuDto.getSku().getStatus():MdseEnum.MdseStatus.DOWN.getIndex())
                .skuName(skuDto.getSpu().getMerchandiseName()).salesVolume(skuDto.getSku().getSalesVolume());//商品名

        wxSkuDtoVo.setSpuId(skuDto.getSku().getSpuId());

        return wxSkuDtoVo;
    }

    private static IntegralMdseVo getIntegralMdse(InnrIntegralMdseVo vo) {
        if (vo==null){
            return null;
        }
        return new IntegralMdseVo().type(vo.getType()).id(vo.getId())
                .integral(vo.getIntegral()).mLv(vo.getMLv()).price(NumberUtils.changeF2Y2(Optional.ofNullable(vo.getPrice()).map(Object::toString).orElse(null))) ;
    }

    private static List<WxRuleValueVo> ruleValueVoToRuleValueListWx(List<MerchandiseRuleValue> ruleValues, List<MerchandiseRuleValueRela> ruleValueRelas, MerchandiseSkuDto skuDto) {
        List<WxRuleValueVo> voList = new ArrayList<>();
        if(ruleValueRelas!=null&&!ruleValueRelas.isEmpty()){
            Map<Long, List<Long>> relaMap =
                    new HashMap<>();
            for (MerchandiseRuleValueRela ruleValueRela : ruleValueRelas) {
                if (ruleValueRela != null) {
                    relaMap.computeIfAbsent(ruleValueRela.getValueId(), k -> new ArrayList<>()).add(ruleValueRela.getSkuId());
                }
            }
            //还要处理skuId和商品名
            if(ruleValues!=null&&!ruleValues.isEmpty()){
                ruleValues.forEach(ruleValue->{
                    List<Long> skuIds =  relaMap.get(ruleValue.getId());
                    // 这里总是出问题 ruleValues多，ruleValueRelas少
                    if(relaMap.get(ruleValue.getId())!= null) {
                        voList.add(new WxRuleValueVo()
                                .id(ruleValue.getId())
                                .ruleName(ruleValue.getRuleName())
                                .value(ruleValue.getRuleValue()).skus(relaMap.get(ruleValue.getId())));

                    }

                    if(skuIds!=null&&!skuIds.isEmpty()&&skuIds.contains(skuDto.getSku().getSkuId())){
                        skuDto.getSpu().setMerchandiseName(skuDto.getSpu().getMerchandiseName()+ruleValue.getRuleValue());
                    }
            });
            }
        }
        return voList;
    }

    private static List<SkuPhoto> spuPicsToDetailPhotos(List<MerchandisePictureSpu> spuPics) {
        return spuPics.stream().filter(Objects::nonNull).filter(pic->pic.getType().equals(MdseEnum.SpuPicType.GRAPHICDETAILS.getIndex()))
                .map(pic->new SkuPhoto().id(pic.getId()).photoUrl(pic.getPath()).sort(pic.getSort()))
                .collect(Collectors.toList());
    }

    private static List<SkuPhoto> skuAndSpuPicToSkuPhoto(List<MerchandisePictureSku> skuPics, List<MerchandisePictureSpu> spuPics) {
        List<SkuPhoto> photos = skuPics.stream().filter(Objects::nonNull)
                .map(pic->new SkuPhoto().id(pic.getId()).photoUrl(pic.getPath()).sort(pic.getSort()))
                .collect(Collectors.toList());
        // 为什么要加上spu图片 ？
//        photos.addAll(spuPics.stream().filter(Objects::nonNull).filter(pic->pic.getType().equals(MdseEnum.SpuPicType.NORMAL.getIndex()))
//                        .map(pic->new SkuPhoto().id(pic.getId()).photoUrl(pic.getPath()).sort(pic.getSort()))
//                        .collect(Collectors.toList()));
        return photos;
    }

    public static SkuListVo skuDtoToWxSkuListVo(MerchandiseSkuDto skuDto, InnrIntegralMdseVo innrIntegralMdseVo, List<MerchandiseSkuDto> skuDtoList) {
        if(skuDto==null){
            return null;
        }
        //处理商品名
        if(skuDto.getRuleValues()!=null&&!skuDto.getRuleValues().isEmpty()){
//            skuDto.getRuleValues().forEach(ruleValue->{skuDto.getSpu().setMerchandiseName(skuDto.getSpu().getMerchandiseName()+ruleValue.getRuleValue());});
            skuDto.getRuleValues().forEach(ruleValue->{skuDto.getSpu().setMerchandiseName(skuDto.getSpu().getMerchandiseName());});
        }

        String unitPrice = skuDto.getSku().getUnitPrice()!=null?NumberUtils.changeF2Y2(skuDto.getSku().getUnitPrice().toString()):"";
        // 首页商品显示范围价格
        if(skuDtoList != null && skuDtoList.size() > 0) {
            MerchandiseSpuDto merchandiseSpuDto = new MerchandiseSpuDto();
            merchandiseSpuDto.setSpu(skuDto.getSpu());
            merchandiseSpuDto.setSkuDtoList(skuDtoList);

            try {
                unitPrice = spuDtoToUnitPrice(merchandiseSpuDto);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        SkuListVo skuListVo = new SkuListVo().skuId(skuDto.getSku().getSkuId())
                .listPrice(skuDto.getSku().getListPrice()!=null?NumberUtils.changeF2Y2(skuDto.getSku().getListPrice().toString()):"")
                .unitPrice(unitPrice)
                .photo(skuDto.getSkuPics()!=null&&!skuDto.getSkuPics().isEmpty()?skuDto.getSkuPics().get(0).getPath():"")
                .quantity(skuDto.getSku().getQuantity())
                .category(skuDto.getCateName())
                .integralMdse(getIntegralMdse(innrIntegralMdseVo))
                .status(Objects.equals(skuDto.getSku().getDelFlag(),EnumUtil.DelFlag.NO.getIndex())?skuDto.getSku().getStatus():MdseEnum.MdseStatus.DOWN.getIndex())
                .ruleValues(skuDto.getRuleValues() != null && skuDto.getRuleValues().size() > 0 ? skuDto.getRuleValues().get(0).getRuleValue() : null)
                .skuName(skuDto.getSpu().getMerchandiseName());//商品名

        skuListVo.setSequence(skuDto.getSku().getSequence());

        return skuListVo;
    }

    public static OrderSkuListVo skuDtoToOrderSkuListVo(MerchandiseSkuDto skuDto, InnrIntegralMdseVo integralMdseVo) {
        if(skuDto==null){
            return null;
        }
        //处理商品名
        if(skuDto.getRuleValues()!=null&&!skuDto.getRuleValues().isEmpty()){
            skuDto.getRuleValues().forEach(ruleValue->{skuDto.getSpu().setMerchandiseName(skuDto.getSpu().getMerchandiseName()+ruleValue.getRuleValue());});
        }
        return new OrderSkuListVo().skuId(skuDto.getSku().getSkuId())
                .spuId(skuDto.getSku().getSpuId())
                .shopId(skuDto.getSku().getShopId())
                .category(skuDto.getSku().getMainCategory())
                .listPrice(skuDto.getSku().getListPrice())
                .unitPrice(skuDto.getSku().getUnitPrice())
                .costPrice(skuDto.getSku().getCostPrice())
                .photo(skuDto.getSkuPics()!=null&&!skuDto.getSkuPics().isEmpty()?skuDto.getSkuPics().get(0).getPath():"")
                .quantity(skuDto.getSku().getQuantity())
                .status(skuDto.getSku().getStatus())
                .type(skuDto.getSpu().getType())
                .integralMdse(integralMdseVo)
                .skuName(skuDto.getSpu().getMerchandiseName());//商品名
    }

    private static Long valiSkuPrice(String s, EnumUtil.Required required) throws RuntimeException {
        String price = s;
        switch (required) {
            case YES:
                if(StringUtils.isBlank(price)){
                    throw new IllegalArgumentException("金额不能为空");
                }
                if (!RegularUtil.isMoney(price))
                    throw new IllegalArgumentException("金额错误");
                return Long.parseLong(NumberUtils.changeY2F(price));
            case NO:
                if (price != null) {
                    if (!RegularUtil.isMoney(price))
                        throw new IllegalArgumentException("金额错误");
                    return Long.parseLong(NumberUtils.changeY2F(price));
                }
                return null;
        }
        return null;
    }
}
